# 微信公众号：学长带你飞
# 主要更新方向：1、车辆路径问题和车间调度问题求解算法
#              2、学术写作技巧
#              3、读书感悟
# @Author  : Jack Hao
from hs import HS
from Road_decode import tool
import numpy as np
import matplotlib.pyplot as plt 
import time

if __name__ == '__main__':
	load_max=200					#载重
	car_v=2							#速度
	parm_p=[200,400,0.3]			#惩罚成本各参数,s1,s2和违反约束比例
	customers=100					#100个需求点
	go=tool(load_max,car_v,parm_p)  #解码模块

	Tmax,HMS=10000,10  			#创作次数和和声库大小
	parm_hs=[0.95,0.1] 	   		#和声算法的记忆库取值概率HMCR和微调概率PAR

	start = time.clock() 
	to=HS(customers,Tmax,HMS,parm_hs,go)
	result,road=to.HS_total()				#算法迭代结果
	end = time.clock()
	t2=end-start
	print('花费时间：%.2f 秒'%(t2))
	
	file='./result_hs.xlsx'
	go.save(road,result,file)    #保存
	Z,save_total1,save_total2,save_total3=go.decode(road)
	car_road,car_s,car_p=save_total2[0],save_total3[0],save_total3[1]
	go.draw(Z,car_road,car_s,car_p)#画图
			
	result=np.array(result).reshape(len(result),2)
	plt.plot(result[:,0],result[:,1])
	font1={'weight':'bold','size':22}#汉字字体大小，可以修改
	plt.xlabel("迭代次数",font1)
	plt.title("成本变化图",font1)
	plt.ylabel("成本",font1)
	# plt.legend(prop={'family' : ['STSong'], 'size'   : 16})#标签字体大小，可以修改
	plt.show()

	